- Notifications
You must be signed in to change notification settings - Fork 849
/
Copy pathOML4Py Clustering KM.dsnb
executable file
·1 lines (1 loc) · 108 KB
/
OML4Py Clustering KM.dsnb
1
[{"layout":null,"template":null,"templateConfig":null,"name":"OML4Py Clustering KM","description":null,"readOnly":false,"type":"low","paragraphs":[{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":null,"title":null,"message":[],"enabled":true,"result":{"startTime":1713901552051,"interpreter":"md.low","endTime":1713901552210,"results":[],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":true,"width":0,"hideResult":true,"dynamicFormParams":null,"row":0,"hasTitle":false,"hideVizConfig":true,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":null,"message":["%md","## Identifying Customer Segments using K-Means Clustering","Oracle Machine Learning supports clustering using several algorithms: k-Means, O-Cluster, and Expectation Maximization. In this notebook, we illustrate how to identify natural clusters of customers using the CUSTOMERS dataset from the SH schema using the unsupervised learning k-Means algorithm. The data exploration, preparation, and machine learning run inside Oracle Autonomous Database.","","See the documentation link below for details on the K-Means in-database algortihm.","","Copyright (c) 2024 Oracle Corporation ","###### <a href=\"https://oss.oracle.com/licenses/upl/\" onclick=\"return ! window.open('https://oss.oracle.com/licenses/upl/');\">The Universal Permissive License (UPL), Version 1.0<\/a>","---"],"enabled":true,"result":{"startTime":1713901552440,"interpreter":"md.low","endTime":1713901552515,"results":[{"message":"<h2 id=\"identifying-customer-segments-using-k-means-clustering\">Identifying Customer Segments using K-Means Clustering<\/h2>\n<p>Oracle Machine Learning supports clustering using several algorithms: k-Means, O-Cluster, and Expectation Maximization. In this notebook, we illustrate how to identify natural clusters of customers using the CUSTOMERS dataset from the SH schema using the unsupervised learning k-Means algorithm. The data exploration, preparation, and machine learning run inside Oracle Autonomous Database.<\/p>\n<p>See the documentation link below for details on the K-Means in-database algortihm.<\/p>\n<p>Copyright (c) 2024 Oracle Corporation<\/p>\n<h6 id=\"the-universal-permissive-license-upl-version-10\"><a href=\"https://oss.oracle.com/licenses/upl/\" onclick=\"return ! window.open('https://oss.oracle.com/licenses/upl/');\">The Universal Permissive License (UPL), Version 1.0<\/a><\/h6>\n<hr />\n","type":"HTML"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":true,"width":9,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":false,"hideVizConfig":true,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":null,"message":["%md",""],"enabled":true,"result":{"startTime":1713901552602,"interpreter":"md.low","endTime":1713901552680,"results":[{"message":"<p><img src=\"http://www.oracle.com/technetwork/database/options/advanced-analytics/clustering-5663171.jpg\" alt=\"tiny arrow\" title=\"tiny arrow\" /><\/p>\n","type":"HTML"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":true,"width":3,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":false,"hideVizConfig":true,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":"For more information...","message":["%md","","* <a href=\"https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/index.html\" target=\"_blank\">Oracle ADB Documentation<\/a>","* <a href=\"https://github.com/oracle-samples/oracle-db-examples/tree/main/machine-learning\" target=\"_blank\">OML folder on Oracle GitHub<\/a>","* <a href=\"https://www.oracle.com/machine-learning\" target=\"_blank\">OML Web Page<\/a>","* <a href=\"https://www.oracle.com/goto/ml-clustering\" target=\"_blank\">OML Clustering<\/a>","* <a href=\"https://oracle.com/goto/ml-k-means\" target=\"_blank\">OML K-Means<\/a>"],"enabled":true,"result":{"startTime":1713901552755,"interpreter":"md.low","endTime":1713901552829,"results":[{"message":"<ul>\n<li><a href=\"https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/index.html\" target=\"_blank\">Oracle ADB Documentation<\/a><\/li>\n<li><a href=\"https://github.com/oracle-samples/oracle-db-examples/tree/main/machine-learning\" target=\"_blank\">OML folder on Oracle GitHub<\/a><\/li>\n<li><a href=\"https://www.oracle.com/machine-learning\" target=\"_blank\">OML Web Page<\/a><\/li>\n<li><a href=\"https://www.oracle.com/goto/ml-clustering\" target=\"_blank\">OML Clustering<\/a><\/li>\n<li><a href=\"https://oracle.com/goto/ml-k-means\" target=\"_blank\">OML K-Means<\/a><\/li>\n<\/ul>\n","type":"HTML"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":true,"width":12,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":true,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":"Import libraries and set display options","message":["%python","","import pandas as pd","import numpy as np","import matplotlib.pyplot as plt","import oml","","pd.set_option('display.max_rows', 500)","pd.set_option('display.max_columns', 500)","pd.set_option('display.width', 1000)"],"enabled":true,"result":{"startTime":1713901552904,"interpreter":"python.low","endTime":1713901554901,"results":[],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":6,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":"Prepare data by merging CUSTOMERS with SUPPLEMENTARY_DEMOGRAPHICS","message":["%python","","CUSTOMERS = oml.sync(query = \"\"\"SELECT CUST_ID, CUST_GENDER, CUST_MARITAL_STATUS, CUST_YEAR_OF_BIRTH, CUST_INCOME_LEVEL, CUST_CREDIT_LIMIT "," FROM SH.CUSTOMERS\"\"\")","DEMO_DF = oml.sync(query = \"\"\"SELECT CUST_ID, EDUCATION, AFFINITY_CARD, HOUSEHOLD_SIZE, OCCUPATION, YRS_RESIDENCE, Y_BOX_GAMES"," FROM SH.SUPPLEMENTARY_DEMOGRAPHICS\"\"\")","CUST_DF = CUSTOMERS.merge(DEMO_DF, how = \"inner\", on = 'CUST_ID',suffixes = [\"\",\"\"])"],"enabled":true,"result":{"startTime":1713901554972,"interpreter":"python.low","endTime":1713901555123,"results":[{"message":"<stdin>:5: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n","type":"TEXT"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":12,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"table","title":"Display the first 5 rows of CUST_DF data","message":["%python","","z.show(CUST_DF.head())"],"enabled":true,"result":{"startTime":1713901555197,"interpreter":"python.low","endTime":1713901555349,"results":[{"message":"CUST_ID\tCUST_GENDER\tCUST_MARITAL_STATUS\tCUST_YEAR_OF_BIRTH\tCUST_INCOME_LEVEL\tCUST_CREDIT_LIMIT\tEDUCATION\tAFFINITY_CARD\tHOUSEHOLD_SIZE\tOCCUPATION\tYRS_RESIDENCE\tY_BOX_GAMES\n100134\tF\tDivorc.\t1965\tL: 300,000 and above\t9000\tAssoc-A\t0\t2\tCleric.\t2\t0\n102828\tF\tNeverM\t1967\tE: 90,000 - 109,999\t10000\tHS-grad\t0\t1\tMachine\t4\t0\n101232\tM\tNeverM\t1979\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tOther\t2\t1\n100696\tM\tMarried\t1971\tF: 110,000 - 129,999\t7000\tProfsc\t1\t3\tProf.\t3\t0\n103948\tM\tNeverM\t1966\tJ: 190,000 - 249,999\t9000\t< Bach.\t0\t1\tCleric.\t4\t0\n","type":"TABLE"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":12,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":null,"message":["%md","","### Build a k-Means model using the CUST_DF proxy object"],"enabled":true,"result":{"startTime":1713901555422,"interpreter":"md.low","endTime":1713901555481,"results":[{"message":"<h3 id=\"build-a-k-means-model-using-the-cust_df-proxy-object\">Build a k-Means model using the CUST_DF proxy object<\/h3>\n","type":"HTML"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":true,"width":12,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":false,"hideVizConfig":true,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":"Build k-Means model with 3 clusters with default settings","message":["%python","","try:"," oml.drop(model=\"CUST_CLUSTER_MODEL\")","except:"," pass","","setting = {'KMNS_ITERATIONS': 20, 'KMNS_RANDOM_SEED': 7}","km_mod = oml.km(n_clusters = 3, **setting).fit(CUST_DF, model_name = \"CUST_CLUSTER_MODEL\", case_id = 'CUST_ID')"],"enabled":true,"result":{"startTime":1713901555552,"interpreter":"python.low","endTime":1713901559352,"results":[],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":6,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":"Build k-Means model with 3 clusters with explicit settings","message":["%python","","try:"," oml.drop(model=\"CUST_CLUSTER_MODEL\")","except:"," pass","","setting = {'KMNS_ITERATIONS' : 20, "," 'KMNS_CONV_TOLERANCE' : .001,"," 'KMNS_DISTANCE' : 'KMNS_EUCLIDEAN',"," 'KMNS_MIN_PCT_ATTR_SUPPORT': .1,"," 'KMNS_NUM_BINS' : 11,"," 'KMNS_SPLIT_CRITERION' : 'KMNS_VARIANCE',"," 'KMNS_RANDOM_SEED' : 7,"," 'KMNS_DETAILS' : 'KMNS_DETAILS_ALL',"," 'ODMS_DETAILS' : 'ODMS_ENABLE',"," 'ODMS_SAMPLING' : 'ODMS_SAMPLING_DISABLE',"," 'PREP_AUTO' : 'ON'}","","km_mod = oml.km(n_clusters = 3, **setting)","km_mod = km_mod.fit(CUST_DF, "," model_name = \"CUST_CLUSTER_MODEL\", "," case_id = 'CUST_ID')"],"enabled":true,"result":{"startTime":1713901559421,"interpreter":"python.low","endTime":1713901562417,"results":[],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":6,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":"[{\"raw\":{\"height\":300,\"lastColumns\":[],\"version\":1}}]","hideInIFrame":false,"selectedVisualization":"raw","title":"Display k-Means model details","message":["%python","","km_mod"],"enabled":true,"result":{"startTime":1713901562489,"interpreter":"python.low","endTime":1713901563134,"results":[{"message":"\nModel Name: CUST_CLUSTER_MODEL\n\nModel Owner: OMLUSER\n\nAlgorithm Name: K-Means\n\nMining Function: CLUSTERING\n\nSettings: \n setting name setting value\n0 ALGO_NAME ALGO_KMEANS\n1 CLUS_NUM_CLUSTERS 3\n2 KMNS_CONV_TOLERANCE 0.001\n3 KMNS_DETAILS KMNS_DETAILS_ALL\n4 KMNS_DISTANCE KMNS_EUCLIDEAN\n5 KMNS_ITERATIONS 20\n6 KMNS_MIN_PCT_ATTR_SUPPORT 0.1\n7 KMNS_NUM_BINS 11\n8 KMNS_RANDOM_SEED 7\n9 KMNS_SPLIT_CRITERION KMNS_VARIANCE\n10 ODMS_DETAILS ODMS_ENABLE\n11 ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO\n12 ODMS_SAMPLING ODMS_SAMPLING_DISABLE\n13 PREP_AUTO ON\n\nGlobal Statistics: \n attribute name attribute value\n0 CONVERGED YES\n1 NUM_ROWS 4500\n\nAttributes: \nAFFINITY_CARD\nCUST_CREDIT_LIMIT\nCUST_GENDER\nCUST_INCOME_LEVEL\nCUST_MARITAL_STATUS\nCUST_YEAR_OF_BIRTH\nEDUCATION\nHOUSEHOLD_SIZE\nOCCUPATION\nYRS_RESIDENCE\nY_BOX_GAMES\n\nPartition: NO\n\nClusters: \n\n CLUSTER_ID ROW_CNT PARENT_CLUSTER_ID TREE_LEVEL DISPERSION\n0 1 4500 NaN 1 6.276772\n1 2 3123 1.0 2 6.586027\n2 3 1377 1.0 2 5.575388\n3 4 2085 2.0 3 6.938511\n4 5 1038 2.0 3 5.878003\n\nTaxonomy: \n\n PARENT_CLUSTER_ID CHILD_CLUSTER_ID\n0 1 2.0\n1 1 3.0\n2 2 4.0\n3 2 5.0\n4 3 NaN\n5 4 NaN\n6 5 NaN\n\nCentroids: \n\n CLUSTER_ID ATTRIBUTE_NAME MEAN MODE_VALUE VARIANCE\n0 1 AFFINITY_CARD 0.238222 None 1.815127e-01\n1 1 CUST_CREDIT_LIMIT 7924.222222 None 1.591424e+07\n2 1 CUST_GENDER NaN M NaN\n3 1 CUST_INCOME_LEVEL NaN J: 190,000 - 249,999 NaN\n4 1 CUST_MARITAL_STATUS NaN Married NaN\n5 1 CUST_YEAR_OF_BIRTH 1964.624444 None 1.871268e+02\n6 1 EDUCATION NaN HS-grad NaN\n7 1 HOUSEHOLD_SIZE NaN 3 NaN\n8 1 OCCUPATION NaN Crafts NaN\n9 1 YRS_RESIDENCE 4.022000 None 3.617431e+00\n10 1 Y_BOX_GAMES 0.312444 None 2.148707e-01\n11 2 AFFINITY_CARD 0.332373 None 2.219722e-01\n12 2 CUST_CREDIT_LIMIT 7758.245277 None 1.591287e+07\n13 2 CUST_GENDER NaN M NaN\n14 2 CUST_INCOME_LEVEL NaN J: 190,000 - 249,999 NaN\n15 2 CUST_MARITAL_STATUS NaN Married NaN\n16 2 CUST_YEAR_OF_BIRTH 1958.073647 None 1.240862e+02\n17 2 EDUCATION NaN HS-grad NaN\n18 2 HOUSEHOLD_SIZE NaN 3 NaN\n19 2 OCCUPATION NaN Exec. NaN\n20 2 YRS_RESIDENCE 4.797951 None 2.846735e+00\n21 2 Y_BOX_GAMES 0.009606 None 9.516917e-03\n22 3 AFFINITY_CARD 0.024691 None 2.409920e-02\n23 3 CUST_CREDIT_LIMIT 8300.653595 None 1.572459e+07\n24 3 CUST_GENDER NaN M NaN\n25 3 CUST_INCOME_LEVEL NaN J: 190,000 - 249,999 NaN\n26 3 CUST_MARITAL_STATUS NaN NeverM NaN\n27 3 CUST_YEAR_OF_BIRTH 1979.481481 None 1.200711e+01\n28 3 EDUCATION NaN < Bach. NaN\n29 3 HOUSEHOLD_SIZE NaN 1 NaN\n30 3 OCCUPATION NaN Other NaN\n31 3 YRS_RESIDENCE 2.262164 None 9.028770e-01\n32 3 Y_BOX_GAMES 0.999274 None 7.262164e-04\n33 4 AFFINITY_CARD 0.000000 None 0.000000e+00\n34 4 CUST_CREDIT_LIMIT 7828.057554 None 1.567640e+07\n35 4 CUST_GENDER NaN M NaN\n36 4 CUST_INCOME_LEVEL NaN J: 190,000 - 249,999 NaN\n37 4 CUST_MARITAL_STATUS NaN Married NaN\n38 4 CUST_YEAR_OF_BIRTH 1958.042206 None 1.355078e+02\n39 4 EDUCATION NaN HS-grad NaN\n40 4 HOUSEHOLD_SIZE NaN 3 NaN\n41 4 OCCUPATION NaN Crafts NaN\n42 4 YRS_RESIDENCE 4.603357 None 2.747110e+00\n43 4 Y_BOX_GAMES 0.000000 None 0.000000e+00\n44 5 AFFINITY_CARD 1.000000 None 0.000000e+00\n45 5 CUST_CREDIT_LIMIT 7618.015414 None 1.637396e+07\n46 5 CUST_GENDER NaN M NaN\n47 5 CUST_INCOME_LEVEL NaN J: 190,000 - 249,999 NaN\n48 5 CUST_MARITAL_STATUS NaN Married NaN\n49 5 CUST_YEAR_OF_BIRTH 1958.136802 None 1.012465e+02\n50 5 EDUCATION NaN Bach. NaN\n51 5 HOUSEHOLD_SIZE NaN 3 NaN\n52 5 OCCUPATION NaN Exec. NaN\n53 5 YRS_RESIDENCE 5.188825 None 2.820627e+00\n54 5 Y_BOX_GAMES 0.028902 None 2.809349e-02\n\nLeaf Cluster Counts: \n\n CLUSTER_ID CNT\n0 3 1377\n1 4 2085\n2 5 1038\n\nCluster Hists: \n\n cluster.id variable bin.id lower.bound upper.bound label count\n0 1 AFFINITY_CARD 1 0.0 0.1 0:.1 3428\n1 1 AFFINITY_CARD 2 0.1 0.2 .1:.2 0\n2 1 AFFINITY_CARD 3 0.2 0.3 .2:.3 0\n3 1 AFFINITY_CARD 4 0.3 0.4 .3:.4 0\n4 1 AFFINITY_CARD 5 0.4 0.5 .4:.5 0\n.. ... ... ... ... ... ... ...\n535 5 Y_BOX_GAMES 6 0.5 0.6 .5:.6 0\n536 5 Y_BOX_GAMES 7 0.6 0.7 .6:.7 0\n537 5 Y_BOX_GAMES 8 0.7 0.8 .7:.8 0\n538 5 Y_BOX_GAMES 9 0.8 0.9 .8:.9 0\n539 5 Y_BOX_GAMES 10 0.9 1.0 .9:1 30\n\n[540 rows x 7 columns]\n\nRules: \n\n cluster.id rhs.support rhs.conf lhr.support lhs.conf lhs.var lhs.var.support lhs.var.conf predicate\n0 1 4500 1.000000 3840 0.853333 EDUCATION 3840 0.625000 EDUCATION IN < Bach.\n1 1 4500 1.000000 3840 0.853333 EDUCATION 3840 0.625000 EDUCATION IN Assoc-A\n2 1 4500 1.000000 3840 0.853333 EDUCATION 3840 0.625000 EDUCATION IN Assoc-V\n3 1 4500 1.000000 3840 0.853333 EDUCATION 3840 0.625000 EDUCATION IN Bach.\n4 1 4500 1.000000 3840 0.853333 EDUCATION 3840 0.625000 EDUCATION IN HS-grad\n5 1 4500 1.000000 3840 0.853333 EDUCATION 3840 0.625000 EDUCATION IN Masters\n6 1 4500 1.000000 4108 0.853333 CUST_INCOME_LEVEL 3840 0.250000 CUST_INCOME_LEVEL IN B: 30,000 - 49,999\n7 1 4500 1.000000 4108 0.853333 CUST_INCOME_LEVEL 3840 0.250000 CUST_INCOME_LEVEL IN E: 90,000 - 109,999\n8 1 4500 1.000000 4108 0.853333 CUST_INCOME_LEVEL 3840 0.250000 CUST_INCOME_LEVEL IN F: 110,000 - 129,999\n9 1 4500 1.000000 4108 0.853333 CUST_INCOME_LEVEL 3840 0.250000 CUST_INCOME_LEVEL IN G: 130,000 - 149,999\n10 1 4500 1.000000 4108 0.853333 CUST_INCOME_LEVEL 3840 0.250000 CUST_INCOME_LEVEL IN H: 150,000 - 169,999\n11 1 4500 1.000000 4108 0.853333 CUST_INCOME_LEVEL 3840 0.250000 CUST_INCOME_LEVEL IN I: 170,000 - 189,999\n12 1 4500 1.000000 4108 0.853333 CUST_INCOME_LEVEL 3840 0.250000 CUST_INCOME_LEVEL IN J: 190,000 - 249,999\n13 1 4500 1.000000 4108 0.853333 CUST_INCOME_LEVEL 3840 0.250000 CUST_INCOME_LEVEL IN K: 250,000 - 299,999\n14 1 4500 1.000000 4108 0.853333 CUST_INCOME_LEVEL 3840 0.250000 CUST_INCOME_LEVEL IN L: 300,000 and above\n15 1 4500 1.000000 4133 0.853333 HOUSEHOLD_SIZE 3840 0.333333 HOUSEHOLD_SIZE IN 1\n16 1 4500 1.000000 4133 0.853333 HOUSEHOLD_SIZE 3840 0.333333 HOUSEHOLD_SIZE IN 2\n17 1 4500 1.000000 4133 0.853333 HOUSEHOLD_SIZE 3840 0.333333 HOUSEHOLD_SIZE IN 3\n18 1 4500 1.000000 4133 0.853333 HOUSEHOLD_SIZE 3840 0.333333 HOUSEHOLD_SIZE IN 9+\n19 1 4500 1.000000 4152 0.853333 CUST_MARITAL_STATUS 3840 0.571429 CUST_MARITAL_STATUS IN Divorc.\n20 1 4500 1.000000 4152 0.853333 CUST_MARITAL_STATUS 3840 0.571429 CUST_MARITAL_STATUS IN Married\n21 1 4500 1.000000 4152 0.853333 CUST_MARITAL_STATUS 3840 0.571429 CUST_MARITAL_STATUS IN NeverM\n22 1 4500 1.000000 4190 0.853333 CUST_YEAR_OF_BIRTH 3840 0.400000 CUST_YEAR_OF_BIRTH <= 1986\n23 1 4500 1.000000 4190 0.853333 CUST_YEAR_OF_BIRTH 3840 0.400000 CUST_YEAR_OF_BIRTH > 1942.2\n24 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN ?\n25 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN Cleric.\n26 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN Crafts\n27 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN Exec.\n28 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN Handler\n29 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN Machine\n30 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN Other\n31 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN Prof.\n32 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN Sales\n33 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN TechSup\n34 1 4500 1.000000 4268 0.853333 OCCUPATION 3840 0.266667 OCCUPATION IN Transp.\n35 1 4500 1.000000 4409 0.853333 YRS_RESIDENCE 3840 0.400000 YRS_RESIDENCE <= 8.4\n36 1 4500 1.000000 4409 0.853333 YRS_RESIDENCE 3840 0.400000 YRS_RESIDENCE >= 0\n37 1 4500 1.000000 4500 0.853333 AFFINITY_CARD 3840 0.000000 AFFINITY_CARD <= 1\n38 1 4500 1.000000 4500 0.853333 AFFINITY_CARD 3840 0.000000 AFFINITY_CARD >= 0\n39 1 4500 1.000000 4500 0.853333 CUST_CREDIT_LIMIT 3840 0.000000 CUST_CREDIT_LIMIT <= 15000\n40 1 4500 1.000000 4500 0.853333 CUST_CREDIT_LIMIT 3840 0.000000 CUST_CREDIT_LIMIT >= 1500\n41 1 4500 1.000000 4500 0.853333 CUST_GENDER 3840 0.000000 CUST_GENDER IN F\n42 1 4500 1.000000 4500 0.853333 CUST_GENDER 3840 0.000000 CUST_GENDER IN M\n43 1 4500 1.000000 4500 0.853333 Y_BOX_GAMES 3840 0.000000 Y_BOX_GAMES <= 1\n44 1 4500 1.000000 4500 0.853333 Y_BOX_GAMES 3840 0.000000 Y_BOX_GAMES >= 0\n45 2 3123 0.694000 2682 0.858790 EDUCATION 2682 0.001083 EDUCATION IN < Bach.\n46 2 3123 0.694000 2682 0.858790 EDUCATION 2682 0.001083 EDUCATION IN Assoc-A\n47 2 3123 0.694000 2682 0.858790 EDUCATION 2682 0.001083 EDUCATION IN Assoc-V\n48 2 3123 0.694000 2682 0.858790 EDUCATION 2682 0.001083 EDUCATION IN Bach.\n49 2 3123 0.694000 2682 0.858790 EDUCATION 2682 0.001083 EDUCATION IN HS-grad\n50 2 3123 0.694000 2682 0.858790 EDUCATION 2682 0.001083 EDUCATION IN Masters\n51 2 3123 0.694000 2772 0.858790 HOUSEHOLD_SIZE 2682 0.014310 HOUSEHOLD_SIZE IN 2\n52 2 3123 0.694000 2772 0.858790 HOUSEHOLD_SIZE 2682 0.014310 HOUSEHOLD_SIZE IN 3\n53 2 3123 0.694000 2772 0.858790 HOUSEHOLD_SIZE 2682 0.014310 HOUSEHOLD_SIZE IN 9+\n54 2 3123 0.694000 2812 0.858790 CUST_MARITAL_STATUS 2682 0.012524 CUST_MARITAL_STATUS IN Divorc.\n55 2 3123 0.694000 2812 0.858790 CUST_MARITAL_STATUS 2682 0.012524 CUST_MARITAL_STATUS IN Married\n56 2 3123 0.694000 2812 0.858790 CUST_MARITAL_STATUS 2682 0.012524 CUST_MARITAL_STATUS IN NeverM\n57 2 3123 0.694000 2836 0.858790 CUST_INCOME_LEVEL 2682 0.000437 CUST_INCOME_LEVEL IN B: 30,000 - 49,999\n58 2 3123 0.694000 2836 0.858790 CUST_INCOME_LEVEL 2682 0.000437 CUST_INCOME_LEVEL IN E: 90,000 - 109,999\n59 2 3123 0.694000 2836 0.858790 CUST_INCOME_LEVEL 2682 0.000437 CUST_INCOME_LEVEL IN F: 110,000 - 129,999\n60 2 3123 0.694000 2836 0.858790 CUST_INCOME_LEVEL 2682 0.000437 CUST_INCOME_LEVEL IN G: 130,000 - 149,999\n61 2 3123 0.694000 2836 0.858790 CUST_INCOME_LEVEL 2682 0.000437 CUST_INCOME_LEVEL IN H: 150,000 - 169,999\n62 2 3123 0.694000 2836 0.858790 CUST_INCOME_LEVEL 2682 0.000437 CUST_INCOME_LEVEL IN I: 170,000 - 189,999\n63 2 3123 0.694000 2836 0.858790 CUST_INCOME_LEVEL 2682 0.000437 CUST_INCOME_LEVEL IN J: 190,000 - 249,999\n64 2 3123 0.694000 2836 0.858790 CUST_INCOME_LEVEL 2682 0.000437 CUST_INCOME_LEVEL IN K: 250,000 - 299,999\n65 2 3123 0.694000 2836 0.858790 CUST_INCOME_LEVEL 2682 0.000437 CUST_INCOME_LEVEL IN L: 300,000 and above\n66 2 3123 0.694000 2868 0.858790 OCCUPATION 2682 0.001381 OCCUPATION IN ?\n67 2 3123 0.694000 2868 0.858790 OCCUPATION 2682 0.001381 OCCUPATION IN Cleric.\n68 2 3123 0.694000 2868 0.858790 OCCUPATION 2682 0.001381 OCCUPATION IN Crafts\n69 2 3123 0.694000 2868 0.858790 OCCUPATION 2682 0.001381 OCCUPATION IN Exec.\n70 2 3123 0.694000 2868 0.858790 OCCUPATION 2682 0.001381 OCCUPATION IN Machine\n71 2 3123 0.694000 2868 0.858790 OCCUPATION 2682 0.001381 OCCUPATION IN Other\n72 2 3123 0.694000 2868 0.858790 OCCUPATION 2682 0.001381 OCCUPATION IN Prof.\n73 2 3123 0.694000 2868 0.858790 OCCUPATION 2682 0.001381 OCCUPATION IN Sales\n74 2 3123 0.694000 2868 0.858790 OCCUPATION 2682 0.001381 OCCUPATION IN TechSup\n75 2 3123 0.694000 2868 0.858790 OCCUPATION 2682 0.001381 OCCUPATION IN Transp.\n76 2 3123 0.694000 2882 0.858790 YRS_RESIDENCE 2682 0.015238 YRS_RESIDENCE <= 8.4\n77 2 3123 0.694000 2882 0.858790 YRS_RESIDENCE 2682 0.015238 YRS_RESIDENCE > 2.8\n78 2 3123 0.694000 3005 0.858790 CUST_YEAR_OF_BIRTH 2682 0.037672 CUST_YEAR_OF_BIRTH <= 1978.7\n79 2 3123 0.694000 3005 0.858790 CUST_YEAR_OF_BIRTH 2682 0.037672 CUST_YEAR_OF_BIRTH > 1934.9\n80 2 3123 0.694000 3093 0.858790 Y_BOX_GAMES 2682 0.045059 Y_BOX_GAMES <= .1\n81 2 3123 0.694000 3093 0.858790 Y_BOX_GAMES 2682 0.045059 Y_BOX_GAMES >= 0\n82 2 3123 0.694000 3123 0.858790 AFFINITY_CARD 2682 0.002368 AFFINITY_CARD <= 1\n83 2 3123 0.694000 3123 0.858790 AFFINITY_CARD 2682 0.002368 AFFINITY_CARD >= 0\n84 2 3123 0.694000 3123 0.858790 CUST_CREDIT_LIMIT 2682 0.000147 CUST_CREDIT_LIMIT <= 15000\n85 2 3123 0.694000 3123 0.858790 CUST_CREDIT_LIMIT 2682 0.000147 CUST_CREDIT_LIMIT >= 1500\n86 2 3123 0.694000 3123 0.858790 CUST_GENDER 2682 0.001089 CUST_GENDER IN F\n87 2 3123 0.694000 3123 0.858790 CUST_GENDER 2682 0.001089 CUST_GENDER IN M\n88 3 1377 0.306000 1153 0.837328 HOUSEHOLD_SIZE 1153 0.041464 HOUSEHOLD_SIZE IN 1\n89 3 1377 0.306000 1153 0.837328 HOUSEHOLD_SIZE 1153 0.041464 HOUSEHOLD_SIZE IN 2\n90 3 1377 0.306000 1153 0.837328 HOUSEHOLD_SIZE 1153 0.041464 HOUSEHOLD_SIZE IN 3\n91 3 1377 0.306000 1231 0.837328 EDUCATION 1153 0.006582 EDUCATION IN 10th\n92 3 1377 0.306000 1231 0.837328 EDUCATION 1153 0.006582 EDUCATION IN 11th\n93 3 1377 0.306000 1231 0.837328 EDUCATION 1153 0.006582 EDUCATION IN < Bach.\n94 3 1377 0.306000 1231 0.837328 EDUCATION 1153 0.006582 EDUCATION IN Assoc-V\n95 3 1377 0.306000 1231 0.837328 EDUCATION 1153 0.006582 EDUCATION IN Bach.\n96 3 1377 0.306000 1231 0.837328 EDUCATION 1153 0.006582 EDUCATION IN HS-grad\n97 3 1377 0.306000 1272 0.837328 CUST_INCOME_LEVEL 1153 0.002354 CUST_INCOME_LEVEL IN B: 30,000 - 49,999\n98 3 1377 0.306000 1272 0.837328 CUST_INCOME_LEVEL 1153 0.002354 CUST_INCOME_LEVEL IN E: 90,000 - 109,999\n99 3 1377 0.306000 1272 0.837328 CUST_INCOME_LEVEL 1153 0.002354 CUST_INCOME_LEVEL IN F: 110,000 - 129,999\n100 3 1377 0.306000 1272 0.837328 CUST_INCOME_LEVEL 1153 0.002354 CUST_INCOME_LEVEL IN G: 130,000 - 149,999\n101 3 1377 0.306000 1272 0.837328 CUST_INCOME_LEVEL 1153 0.002354 CUST_INCOME_LEVEL IN H: 150,000 - 169,999\n102 3 1377 0.306000 1272 0.837328 CUST_INCOME_LEVEL 1153 0.002354 CUST_INCOME_LEVEL IN I: 170,000 - 189,999\n103 3 1377 0.306000 1272 0.837328 CUST_INCOME_LEVEL 1153 0.002354 CUST_INCOME_LEVEL IN J: 190,000 - 249,999\n104 3 1377 0.306000 1272 0.837328 CUST_INCOME_LEVEL 1153 0.002354 CUST_INCOME_LEVEL IN K: 250,000 - 299,999\n105 3 1377 0.306000 1272 0.837328 CUST_INCOME_LEVEL 1153 0.002354 CUST_INCOME_LEVEL IN L: 300,000 and above\n106 3 1377 0.306000 1277 0.837328 OCCUPATION 1153 0.007270 OCCUPATION IN ?\n107 3 1377 0.306000 1277 0.837328 OCCUPATION 1153 0.007270 OCCUPATION IN Cleric.\n108 3 1377 0.306000 1277 0.837328 OCCUPATION 1153 0.007270 OCCUPATION IN Crafts\n109 3 1377 0.306000 1277 0.837328 OCCUPATION 1153 0.007270 OCCUPATION IN Exec.\n110 3 1377 0.306000 1277 0.837328 OCCUPATION 1153 0.007270 OCCUPATION IN Handler\n111 3 1377 0.306000 1277 0.837328 OCCUPATION 1153 0.007270 OCCUPATION IN Machine\n112 3 1377 0.306000 1277 0.837328 OCCUPATION 1153 0.007270 OCCUPATION IN Other\n113 3 1377 0.306000 1277 0.837328 OCCUPATION 1153 0.007270 OCCUPATION IN Prof.\n114 3 1377 0.306000 1277 0.837328 OCCUPATION 1153 0.007270 OCCUPATION IN Sales\n115 3 1377 0.306000 1277 0.837328 OCCUPATION 1153 0.007270 OCCUPATION IN TechSup\n116 3 1377 0.306000 1279 0.837328 CUST_MARITAL_STATUS 1153 0.050995 CUST_MARITAL_STATUS IN Married\n117 3 1377 0.306000 1279 0.837328 CUST_MARITAL_STATUS 1153 0.050995 CUST_MARITAL_STATUS IN NeverM\n118 3 1377 0.306000 1343 0.837328 AFFINITY_CARD 1153 0.024646 AFFINITY_CARD <= .1\n119 3 1377 0.306000 1343 0.837328 AFFINITY_CARD 1153 0.024646 AFFINITY_CARD >= 0\n120 3 1377 0.306000 1359 0.837328 YRS_RESIDENCE 1153 0.065320 YRS_RESIDENCE <= 4.2\n121 3 1377 0.306000 1359 0.837328 YRS_RESIDENCE 1153 0.065320 YRS_RESIDENCE >= 0\n122 3 1377 0.306000 1376 0.837328 Y_BOX_GAMES 1153 0.143419 Y_BOX_GAMES <= 1\n123 3 1377 0.306000 1376 0.837328 Y_BOX_GAMES 1153 0.143419 Y_BOX_GAMES > .9\n124 3 1377 0.306000 1377 0.837328 CUST_CREDIT_LIMIT 1153 0.000766 CUST_CREDIT_LIMIT <= 15000\n125 3 1377 0.306000 1377 0.837328 CUST_CREDIT_LIMIT 1153 0.000766 CUST_CREDIT_LIMIT >= 1500\n126 3 1377 0.306000 1377 0.837328 CUST_GENDER 1153 0.005175 CUST_GENDER IN F\n127 3 1377 0.306000 1377 0.837328 CUST_GENDER 1153 0.005175 CUST_GENDER IN M\n128 3 1377 0.306000 1377 0.837328 CUST_YEAR_OF_BIRTH 1153 0.133039 CUST_YEAR_OF_BIRTH <= 1986\n129 3 1377 0.306000 1377 0.837328 CUST_YEAR_OF_BIRTH 1153 0.133039 CUST_YEAR_OF_BIRTH > 1971.4\n130 4 2085 0.463333 1802 0.864269 CUST_MARITAL_STATUS 1802 0.010504 CUST_MARITAL_STATUS IN Divorc.\n131 4 2085 0.463333 1802 0.864269 CUST_MARITAL_STATUS 1802 0.010504 CUST_MARITAL_STATUS IN Married\n132 4 2085 0.463333 1802 0.864269 CUST_MARITAL_STATUS 1802 0.010504 CUST_MARITAL_STATUS IN NeverM\n133 4 2085 0.463333 1842 0.864269 EDUCATION 1802 0.002405 EDUCATION IN 7th-8th\n134 4 2085 0.463333 1842 0.864269 EDUCATION 1802 0.002405 EDUCATION IN < Bach.\n135 4 2085 0.463333 1842 0.864269 EDUCATION 1802 0.002405 EDUCATION IN Assoc-A\n136 4 2085 0.463333 1842 0.864269 EDUCATION 1802 0.002405 EDUCATION IN Assoc-V\n137 4 2085 0.463333 1842 0.864269 EDUCATION 1802 0.002405 EDUCATION IN Bach.\n138 4 2085 0.463333 1842 0.864269 EDUCATION 1802 0.002405 EDUCATION IN HS-grad\n139 4 2085 0.463333 1842 0.864269 EDUCATION 1802 0.002405 EDUCATION IN Masters\n140 4 2085 0.463333 1844 0.864269 HOUSEHOLD_SIZE 1802 0.011541 HOUSEHOLD_SIZE IN 2\n141 4 2085 0.463333 1844 0.864269 HOUSEHOLD_SIZE 1802 0.011541 HOUSEHOLD_SIZE IN 3\n142 4 2085 0.463333 1844 0.864269 HOUSEHOLD_SIZE 1802 0.011541 HOUSEHOLD_SIZE IN 9+\n143 4 2085 0.463333 1887 0.864269 CUST_INCOME_LEVEL 1802 0.000278 CUST_INCOME_LEVEL IN B: 30,000 - 49,999\n144 4 2085 0.463333 1887 0.864269 CUST_INCOME_LEVEL 1802 0.000278 CUST_INCOME_LEVEL IN E: 90,000 - 109,999\n145 4 2085 0.463333 1887 0.864269 CUST_INCOME_LEVEL 1802 0.000278 CUST_INCOME_LEVEL IN F: 110,000 - 129,999\n146 4 2085 0.463333 1887 0.864269 CUST_INCOME_LEVEL 1802 0.000278 CUST_INCOME_LEVEL IN G: 130,000 - 149,999\n147 4 2085 0.463333 1887 0.864269 CUST_INCOME_LEVEL 1802 0.000278 CUST_INCOME_LEVEL IN H: 150,000 - 169,999\n148 4 2085 0.463333 1887 0.864269 CUST_INCOME_LEVEL 1802 0.000278 CUST_INCOME_LEVEL IN I: 170,000 - 189,999\n149 4 2085 0.463333 1887 0.864269 CUST_INCOME_LEVEL 1802 0.000278 CUST_INCOME_LEVEL IN J: 190,000 - 249,999\n150 4 2085 0.463333 1887 0.864269 CUST_INCOME_LEVEL 1802 0.000278 CUST_INCOME_LEVEL IN K: 250,000 - 299,999\n151 4 2085 0.463333 1887 0.864269 CUST_INCOME_LEVEL 1802 0.000278 CUST_INCOME_LEVEL IN L: 300,000 and above\n152 4 2085 0.463333 1909 0.864269 YRS_RESIDENCE 1802 0.011783 YRS_RESIDENCE <= 8.4\n153 4 2085 0.463333 1909 0.864269 YRS_RESIDENCE 1802 0.011783 YRS_RESIDENCE > 2.8\n154 4 2085 0.463333 1989 0.864269 CUST_YEAR_OF_BIRTH 1802 0.038027 CUST_YEAR_OF_BIRTH <= 1978.7\n155 4 2085 0.463333 1989 0.864269 CUST_YEAR_OF_BIRTH 1802 0.038027 CUST_YEAR_OF_BIRTH > 1934.9\n156 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN ?\n157 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN Cleric.\n158 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN Crafts\n159 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN Exec.\n160 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN Farming\n161 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN Handler\n162 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN Machine\n163 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN Other\n164 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN Prof.\n165 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN Sales\n166 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN TechSup\n167 4 2085 0.463333 2031 0.864269 OCCUPATION 1802 0.001454 OCCUPATION IN Transp.\n168 4 2085 0.463333 2085 0.864269 AFFINITY_CARD 1802 0.039364 AFFINITY_CARD <= .1\n169 4 2085 0.463333 2085 0.864269 AFFINITY_CARD 1802 0.039364 AFFINITY_CARD >= 0\n170 4 2085 0.463333 2085 0.864269 CUST_CREDIT_LIMIT 1802 0.000065 CUST_CREDIT_LIMIT <= 15000\n171 4 2085 0.463333 2085 0.864269 CUST_CREDIT_LIMIT 1802 0.000065 CUST_CREDIT_LIMIT >= 1500\n172 4 2085 0.463333 2085 0.864269 CUST_GENDER 1802 0.001412 CUST_GENDER IN F\n173 4 2085 0.463333 2085 0.864269 CUST_GENDER 1802 0.001412 CUST_GENDER IN M\n174 4 2085 0.463333 2085 0.864269 Y_BOX_GAMES 1802 0.053345 Y_BOX_GAMES <= .1\n175 4 2085 0.463333 2085 0.864269 Y_BOX_GAMES 1802 0.053345 Y_BOX_GAMES >= 0\n176 5 1038 0.230667 891 0.858382 CUST_GENDER 891 0.038201 CUST_GENDER = M\n177 5 1038 0.230667 909 0.858382 CUST_MARITAL_STATUS 891 0.057819 CUST_MARITAL_STATUS = Married\n178 5 1038 0.230667 946 0.858382 OCCUPATION 891 0.021280 OCCUPATION IN Cleric.\n179 5 1038 0.230667 946 0.858382 OCCUPATION 891 0.021280 OCCUPATION IN Crafts\n180 5 1038 0.230667 946 0.858382 OCCUPATION 891 0.021280 OCCUPATION IN Exec.\n181 5 1038 0.230667 946 0.858382 OCCUPATION 891 0.021280 OCCUPATION IN Machine\n182 5 1038 0.230667 946 0.858382 OCCUPATION 891 0.021280 OCCUPATION IN Prof.\n183 5 1038 0.230667 946 0.858382 OCCUPATION 891 0.021280 OCCUPATION IN Sales\n184 5 1038 0.230667 946 0.858382 OCCUPATION 891 0.021280 OCCUPATION IN TechSup\n185 5 1038 0.230667 946 0.858382 OCCUPATION 891 0.021280 OCCUPATION IN Transp.\n186 5 1038 0.230667 949 0.858382 CUST_INCOME_LEVEL 891 0.001487 CUST_INCOME_LEVEL IN B: 30,000 - 49,999\n187 5 1038 0.230667 949 0.858382 CUST_INCOME_LEVEL 891 0.001487 CUST_INCOME_LEVEL IN E: 90,000 - 109,999\n188 5 1038 0.230667 949 0.858382 CUST_INCOME_LEVEL 891 0.001487 CUST_INCOME_LEVEL IN F: 110,000 - 129,999\n189 5 1038 0.230667 949 0.858382 CUST_INCOME_LEVEL 891 0.001487 CUST_INCOME_LEVEL IN G: 130,000 - 149,999\n190 5 1038 0.230667 949 0.858382 CUST_INCOME_LEVEL 891 0.001487 CUST_INCOME_LEVEL IN H: 150,000 - 169,999\n191 5 1038 0.230667 949 0.858382 CUST_INCOME_LEVEL 891 0.001487 CUST_INCOME_LEVEL IN I: 170,000 - 189,999\n192 5 1038 0.230667 949 0.858382 CUST_INCOME_LEVEL 891 0.001487 CUST_INCOME_LEVEL IN J: 190,000 - 249,999\n193 5 1038 0.230667 949 0.858382 CUST_INCOME_LEVEL 891 0.001487 CUST_INCOME_LEVEL IN K: 250,000 - 299,999\n194 5 1038 0.230667 949 0.858382 CUST_INCOME_LEVEL 891 0.001487 CUST_INCOME_LEVEL IN L: 300,000 and above\n195 5 1038 0.230667 973 0.858382 YRS_RESIDENCE 891 0.028267 YRS_RESIDENCE <= 8.4\n196 5 1038 0.230667 973 0.858382 YRS_RESIDENCE 891 0.028267 YRS_RESIDENCE > 2.8\n197 5 1038 0.230667 1003 0.858382 EDUCATION 891 0.015113 EDUCATION IN < Bach.\n198 5 1038 0.230667 1003 0.858382 EDUCATION 891 0.015113 EDUCATION IN Assoc-A\n199 5 1038 0.230667 1003 0.858382 EDUCATION 891 0.015113 EDUCATION IN Assoc-V\n200 5 1038 0.230667 1003 0.858382 EDUCATION 891 0.015113 EDUCATION IN Bach.\n201 5 1038 0.230667 1003 0.858382 EDUCATION 891 0.015113 EDUCATION IN HS-grad\n202 5 1038 0.230667 1003 0.858382 EDUCATION 891 0.015113 EDUCATION IN Masters\n203 5 1038 0.230667 1003 0.858382 EDUCATION 891 0.015113 EDUCATION IN PhD\n204 5 1038 0.230667 1003 0.858382 EDUCATION 891 0.015113 EDUCATION IN Profsc\n205 5 1038 0.230667 1003 0.858382 HOUSEHOLD_SIZE 891 0.066799 HOUSEHOLD_SIZE IN 2\n206 5 1038 0.230667 1003 0.858382 HOUSEHOLD_SIZE 891 0.066799 HOUSEHOLD_SIZE IN 3\n207 5 1038 0.230667 1003 0.858382 HOUSEHOLD_SIZE 891 0.066799 HOUSEHOLD_SIZE IN 4-5\n208 5 1038 0.230667 1008 0.858382 Y_BOX_GAMES 891 0.035169 Y_BOX_GAMES <= .1\n209 5 1038 0.230667 1008 0.858382 Y_BOX_GAMES 891 0.035169 Y_BOX_GAMES >= 0\n210 5 1038 0.230667 1016 0.858382 CUST_YEAR_OF_BIRTH 891 0.039020 CUST_YEAR_OF_BIRTH <= 1978.7\n211 5 1038 0.230667 1016 0.858382 CUST_YEAR_OF_BIRTH 891 0.039020 CUST_YEAR_OF_BIRTH > 1934.9\n212 5 1038 0.230667 1038 0.858382 AFFINITY_CARD 891 0.169369 AFFINITY_CARD <= 1\n213 5 1038 0.230667 1038 0.858382 AFFINITY_CARD 891 0.169369 AFFINITY_CARD > .9\n214 5 1038 0.230667 1038 0.858382 CUST_CREDIT_LIMIT 891 0.000585 CUST_CREDIT_LIMIT <= 15000\n215 5 1038 0.230667 1038 0.858382 CUST_CREDIT_LIMIT 891 0.000585 CUST_CREDIT_LIMIT >= 1500\n\n\n","type":"TEXT"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":12,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"raw","title":"Display model settings","message":["%python","","km_mod.settings"],"enabled":true,"result":{"startTime":1713901563226,"interpreter":"python.low","endTime":1713901563302,"results":[{"message":"{'kmns_iterations': 20, 'kmns_conv_tolerance': 0.001, 'kmns_distance': 'KMNS_EUCLIDEAN', 'kmns_min_pct_attr_support': 0.1, 'kmns_num_bins': 11, 'kmns_split_criterion': 'KMNS_VARIANCE', 'kmns_random_seed': 7, 'kmns_details': 'KMNS_DETAILS_ALL', 'odms_details': 'ODMS_ENABLE', 'odms_sampling': 'ODMS_SAMPLING_DISABLE', 'prep_auto': 'ON', 'clus_num_clusters': 3}\n","type":"TEXT"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":6,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"table","title":"Display cluster details for all clusters in the hierarchy with row counts and dispersion","message":["%python","","z.show(km_mod.clusters)"],"enabled":true,"result":{"startTime":1713901563372,"interpreter":"python.low","endTime":1713901563465,"results":[{"message":"CLUSTER_ID\tROW_CNT\tPARENT_CLUSTER_ID\tTREE_LEVEL\tDISPERSION\n1.0\t4500.0\tnan\t1.0\t6.276771678127229\n2.0\t3123.0\t1.0\t2.0\t6.5860271201254195\n3.0\t1377.0\t1.0\t2.0\t5.575388420784927\n4.0\t2085.0\t2.0\t3.0\t6.9385112173435965\n5.0\t1038.0\t2.0\t3.0\t5.878002705192953\n","type":"TABLE"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":12,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":"Define function to format the cluster centroid rule","message":["%python","","def display_rule(model, cluster_id, dat):"," rules = model.rules"," cluster_rules = rules[rules['cluster.id'] == cluster_id]"," vars = cluster_rules['lhs.var'].drop_duplicates().pull()"," res = []",""," for var in vars:"," rule = []"," var_rules = cluster_rules[cluster_rules['lhs.var'] == var, 'predicate'].pull()"," if isinstance(dat[var], oml.String):"," for r in var_rules:"," v = r.split(\" IN \")[1]"," if len(v) > 0:"," rule.append(v)"," rule = var + \" IN {\" + ','.join(rule) + \"}\""," else:"," rule = \" and \".join(var_rules)"," res.append(rule + \"\\n\")",""," print(\"if \" + \" and \".join(res) + \"then cluster \" + str(cluster_id))"],"enabled":true,"result":{"startTime":1713901606100,"interpreter":"python.low","endTime":1713901606162,"results":[],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":0,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"raw","title":"Display formatted rule for cluster 3","message":["%python","","display_rule(model = km_mod, "," cluster_id = 3, "," dat = CUST_DF)"],"enabled":true,"result":{"startTime":1713901609220,"interpreter":"python.low","endTime":1713901610031,"results":[{"message":"if CUST_CREDIT_LIMIT <= 15000 and CUST_CREDIT_LIMIT >= 1500\n and CUST_INCOME_LEVEL IN {B: 30,000 - 49,999,E: 90,000 - 109,999,F: 110,000 - 129,999,G: 130,000 - 149,999,H: 150,000 - 169,999,I: 170,000 - 189,999,J: 190,000 - 249,999,K: 250,000 - 299,999,L: 300,000 and above}\n and HOUSEHOLD_SIZE IN {1,2,3}\n and OCCUPATION IN {?,Cleric.,Crafts,Exec.,Handler,Machine,Other,Prof.,Sales,TechSup}\n and YRS_RESIDENCE <= 4.2 and YRS_RESIDENCE >= 0\n and CUST_YEAR_OF_BIRTH <= 1986 and CUST_YEAR_OF_BIRTH > 1971.4\n and AFFINITY_CARD <= .1 and AFFINITY_CARD >= 0\n and CUST_MARITAL_STATUS IN {Married,NeverM}\n and Y_BOX_GAMES <= 1 and Y_BOX_GAMES > .9\n and EDUCATION IN {10th,11th,< Bach.,Assoc-V,Bach.,HS-grad}\n and CUST_GENDER IN {F,M}\nthen cluster 3\n","type":"TEXT"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":0,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":"Apply clustering model to assign rows to clusters","message":["%python","","pred = km_mod.predict(CUST_DF, supplemental_cols = CUST_DF)"],"enabled":true,"result":{"startTime":1713901619500,"interpreter":"python.low","endTime":1713901619619,"results":[],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":5,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":"Use matplotlib to view cluster results using birth year and years residence","message":["%python","","pred_df = pred[['CUST_ID', 'CLUSTER_ID', 'CUST_YEAR_OF_BIRTH', 'YRS_RESIDENCE', 'CUST_CREDIT_LIMIT']].pull()","","fig = plt.figure()","ax=fig.add_axes([0.1,0.1,0.8,0.8])","","ids = pred_df['CLUSTER_ID']","clusters = ids.drop_duplicates().values","handles = []","labs = []","colors = ['r', 'b', 'g']","for i, c in enumerate(clusters):"," xc = pred_df[pred_df['CLUSTER_ID'] == c]['YRS_RESIDENCE'].values"," yc = pred_df[pred_df['CLUSTER_ID'] == c]['CUST_YEAR_OF_BIRTH'].values"," "," h = ax.scatter(xc, yc, color= colors[i])"," handles.append(h)"," labs.append('CLUSTER' + str(c))","ax.legend(handles, labs)","plt.title('K-Means Clustering')","","plt.grid(True)","","plt.xlabel('YRS_RESIDENCE')","plt.ylabel('CUST_YEAR_OF_BIRTH')","plt.show()"],"enabled":true,"result":{"startTime":1713901619696,"interpreter":"python.low","endTime":1713901619964,"results":[{"message":"<div style='width:auto;height:auto'><img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAYAAAByNR6YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAAsTAAALEwEAmpwYAABxm0lEQVR4nO3dfVxUddo/8M8woIIoPpQPMAL5hIIIirZ6V66G2vpE2Zor95Sp605CZVr264FaraQ0qcxqrEm7W2sWy9w0NblLcsp7y1wpFKUQdwUFTEtFQFB5OL8/DoyMnFEYzpzDzPm8Xy9ew7lmmO/3DDBcnHOd66sTBEEAEREREcnGR+0JEBEREXkbJlhEREREMmOCRURERCQzJlhEREREMmOCRURERCQzJlhEREREMmOCRURERCQzJlhEREREMmOCRURERCQzJlhEREREMmOCRURERCQzJlhEREREMmOCRURERCQzJlhEREREMmOCRURERCQzJlhEREREMmOCRURERCQzJlhEREREMmOCRURERCQzJlhEREREMmOCRURERCQzJlhEREREMmOCRURERCQzJlhE5NHmzJmDZ555Ru1p4Pjx4wgMDERtba3aUyGiNoAJFpGXCA8Px65du+zbGzduRNeuXfH11183eaxOp0OPHj1QU1Njj1VXV6NHjx7Q6XSKzLe5BEHAmjVrMGTIEHTs2BEGgwH33HMPcnJyZBvDZrPBYDC06jlCQ0NRUVEBvV4v06yIyJMxwSLyQn/729/w4IMPYseOHfj9738v+ZiuXbti586d9u2dO3eia9euSk2x2R555BG8/vrrWLNmDc6ePYsjR47grrvuwo4dO9Seml3jRJWICGCCReR13nnnHTz22GP43//9X/zXf/2X08fdd9992LBhg317w4YNmD17tsNjzp8/jz//+c/o3bs3QkJC8Mwzz9hPgf373//G7bffju7du+OGG26A0WhEaWmp/WvDw8ORlpaGoUOHIigoCH/6059w8eJFAMBvv/2GqVOnokuXLujWrRtuu+021NXVNZljfn4+3nrrLaSnp+P2229H+/btERAQAKPRiCeffLLJ499//33ceuutDjGdToejR48CAD7//HNERkaiU6dOCAkJQVpaGi5cuIBJkyahpKQEgYGBCAwMRElJCerq6rBixQr069cP3bt3x8yZM3H27FkAQEFBAXQ6HdavX4/Q0FDcfvvt9lhDsjV27Fg8++yzuOWWW9CpUydMnDgRv/32m8PrHRYWhu7du+OFF15ocgSSiDwbEywiL7J27Vr89a9/RWZmJkaMGHHNx95111345ptvUFpainPnzmHPnj248847HR4zZ84c+Pr64ujRo/jxxx/xxRdfYN26dQDEU3dPPfUUSkpK8NNPP+HEiRNYtmyZw9d//PHHyMjIwLFjx3Dw4EG8//77AIBXXnkFBoMBv/76K06dOoUXX3xR8tRkZmYmDAYDbr75ZtdflEb+/Oc/45133kF5eTkOHTqE22+/HR07dsTOnTsRHByMiooKVFRUIDg4GG+88Qa2bNmCr7/+GiUlJejatSsefPBBh+f7+uuv8dNPP+F///d/Jcf7+9//jv/5n//B6dOncfnyZaSlpQEAcnNzkZycDKvVipMnT+L8+fMoLi6WZR+JqG1ggkXkRb788kuMGjUK0dHR131shw4dMG3aNHz00Uf46KOPkJCQgA4dOtjvP3XqFD7//HOsXr0aHTt2RI8ePbB48WJs3LgRANC/f39MmDAB7du3x4033ohHH320Sb3XwoULERwcjG7dumHatGnIzs4GAPj5+eHkyZMoLCyEn58fbrvtNskE68yZM+jdu3crXhFHfn5+yM3NRVlZGbp27Yrhw4c7fezbb7+N1NRUGAwGtG/fHsuWLcMnn3zicDpw2bJl6NixI/z9/SWfY+7cuRg4cCD8/f0xc+ZM+/5/8sknmDZtGm699Va0a9cOzz//fJurfSOi1mGCReRF1q5diyNHjmD+/PkQBAEAEBUVZT/1tWfPHofHz549Gxs2bJA8PVhYWIjq6mr07t0bXbp0QZcuXfDAAw/g9OnTAMQEbNasWQgJCUHnzp1x7733OpwCA4BevXrZPw8ICEBFRQUA4PHHH0f//v0xceJE9O3bFytWrJDcn+7du+PkyZOte1Ea2bx5Mz7//HOEhYXh97//Pb777junjy0sLMT06dPt+z548GDo9XqcOnXK/pg+ffpcczxn+19SUuLwtQEBAejevburu0VEbRATLCIv0rNnT2RmZmLPnj1ITk4GABw+fNh+6uu2225zePxtt92GkydP4tSpU01ql/r06YP27dvjt99+Q2lpKUpLS1FWVobDhw8DAJ5++mnodDrk5OSgrKwMH374oT2pu55OnTrhlVde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 style='width=auto;height:auto'><div>\n","type":"HTML"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":true,"width":7,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":null,"message":["%md","","### Compare clusters","","Compare the feature distribution for year of birth in clusters 4 and 5. Cluster 4 tends to have middle aged individuals, while cluster 5 has more senior individuals. "],"enabled":true,"result":{"startTime":1713901620056,"interpreter":"md.low","endTime":1713901620124,"results":[{"message":"<h3 id=\"compare-clusters\">Compare clusters<\/h3>\n<p>Compare the feature distribution for year of birth in clusters 4 and 5. Cluster 4 tends to have middle aged individuals, while cluster 5 has more senior individuals.<\/p>\n","type":"HTML"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":true,"width":12,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":false,"hideVizConfig":true,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":"[{\"table\":{\"version\":1},\"bar\":{\"showSeries\":[\"count\"],\"series\":{\"availableSeriesElements\":[{\"id\":\"count\",\"lineType\":\"straight\",\"borderColor\":\"rgb(25, 95, 116)\",\"borderWidth\":0,\"color\":\"rgb(25, 95, 116)\",\"pattern\":\"auto\",\"markerColor\":\"rgb(25, 95, 116)\",\"markerDisplayed\":\"auto\",\"markerShape\":\"auto\",\"markerSize\":0}]},\"axis\":{\"y\":{\"max\":100}},\"lastColumns\":[\"CUST_YEAR_OF_BIRTH\",\"count\"],\"version\":1}}]","hideInIFrame":false,"selectedVisualization":"bar","title":"Distribution of the year of birth for cluster 4","message":["%python","","feature = 'CUST_YEAR_OF_BIRTH' ","","DF = pred[pred['CLUSTER_ID'] == 4].crosstab([feature])","z.show(DF.sort_values(feature))"],"enabled":true,"result":{"startTime":1713901620192,"interpreter":"python.low","endTime":1713901620512,"results":[{"message":"CUST_YEAR_OF_BIRTH\tcount\n1913\t5\n1921\t1\n1922\t6\n1923\t4\n1924\t2\n1925\t6\n1926\t10\n1927\t3\n1928\t14\n1929\t6\n1930\t4\n1931\t6\n1932\t9\n1933\t8\n1934\t12\n1935\t13\n1936\t12\n1937\t10\n1938\t17\n1939\t22\n1940\t22\n1941\t24\n1942\t16\n1943\t32\n1944\t31\n1945\t32\n1946\t33\n1947\t35\n1948\t34\n1949\t34\n1950\t38\n1951\t25\n1952\t49\n1953\t20\n1954\t61\n1955\t50\n1956\t63\n1957\t71\n1958\t66\n1959\t72\n1960\t50\n1961\t75\n1962\t81\n1963\t70\n1964\t83\n1965\t59\n1966\t86\n1967\t92\n1968\t93\n1969\t95\n1970\t89\n1971\t93\n1972\t78\n1973\t63\n","type":"TABLE"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":6,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":"[{\"table\":{\"version\":1},\"bar\":{\"showSeries\":[\"count\"],\"series\":{\"availableSeriesElements\":[{\"id\":\"count\",\"lineType\":\"straight\",\"borderColor\":\"rgb(25, 95, 116)\",\"borderWidth\":0,\"color\":\"rgb(25, 95, 116)\",\"pattern\":\"auto\",\"markerColor\":\"rgb(25, 95, 116)\",\"markerDisplayed\":\"auto\",\"markerShape\":\"auto\",\"markerSize\":0}]},\"axis\":{\"y\":{\"max\":100}},\"lastColumns\":[\"CUST_YEAR_OF_BIRTH\",\"count\"],\"version\":1}}]","hideInIFrame":false,"selectedVisualization":"bar","title":"Distribution of the year of birth for cluster 5","message":["%python","","feature = 'CUST_YEAR_OF_BIRTH' ","","DF = pred[pred['CLUSTER_ID'] == 5].crosstab([feature])","z.show(DF.sort_values(feature))"],"enabled":true,"result":{"startTime":1713901620589,"interpreter":"python.low","endTime":1713901620859,"results":[{"message":"CUST_YEAR_OF_BIRTH\tcount\n1924\t4\n1925\t2\n1926\t2\n1929\t1\n1931\t1\n1932\t4\n1933\t2\n1934\t6\n1935\t5\n1936\t10\n1937\t2\n1938\t9\n1939\t3\n1940\t8\n1941\t7\n1942\t12\n1943\t11\n1944\t21\n1945\t17\n1946\t12\n1947\t10\n1948\t18\n1949\t17\n1950\t22\n1951\t26\n1952\t34\n1953\t36\n1954\t32\n1955\t44\n1956\t33\n1957\t48\n1958\t39\n1959\t47\n1960\t50\n1961\t40\n1962\t32\n1963\t32\n1964\t22\n1965\t44\n1966\t32\n1967\t31\n1968\t44\n1969\t40\n1970\t27\n1971\t28\n1972\t12\n1973\t29\n1974\t10\n1975\t13\n1976\t2\n1977\t4\n1978\t1\n","type":"TABLE"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":6,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":null,"message":["%md","","### Using SQL access prediction details","One feature of OML is the ability to use models from SQL as well as Python. While OML4Py v1.0 does not expose prediction details through a Python API, such details are available through the SQL API, which is illustrated here.","","We first create a table from the Python proxy object CUSTOMERS360 so that SQL can reference it. This could just as easily been a database view. ","","Then, since prediction details are provided as an XML string, we extract the elements to present them as table columns. The 'first attribute' identfies the feature and value that most influences the cluster assignment with corresponding weight. This is followed by the second and third attribute. In this example, we provide three, but additional attributes could be presented as well. "],"enabled":true,"result":{"startTime":1713901620932,"interpreter":"md.low","endTime":1713901620991,"results":[{"message":"<h3 id=\"using-sql-access-prediction-details\">Using SQL access prediction details<\/h3>\n<p>One feature of OML is the ability to use models from SQL as well as Python. While OML4Py v1.0 does not expose prediction details through a Python API, such details are available through the SQL API, which is illustrated here.<\/p>\n<p>We first create a table from the Python proxy object CUSTOMERS360 so that SQL can reference it. This could just as easily been a database view.<\/p>\n<p>Then, since prediction details are provided as an XML string, we extract the elements to present them as table columns. The 'first attribute' identfies the feature and value that most influences the cluster assignment with corresponding weight. This is followed by the second and third attribute. In this example, we provide three, but additional attributes could be presented as well.<\/p>\n","type":"HTML"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":true,"width":12,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":false,"hideVizConfig":true,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":"Create table for use in SQL query","message":["%python","","try:"," oml.drop(table = 'CUSTOMERS360')","except:"," pass","_ = CUST_DF.materialize(table = 'CUSTOMERS360')"],"enabled":true,"result":{"startTime":1713901621210,"interpreter":"python.low","endTime":1713901621859,"results":[],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":6,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"table","title":"List 3 most relevant attributes for specific customers and likely cluster assignments","message":["%sql","","SELECT CUST_ID,"," CLUSTER_ID,"," ROUND(PROB*100,0) PROB_PCT,"," RTRIM(TRIM(SUBSTR(OUTPRED.\"Attribute1\",17,100)),'rank=\"1\"/>') FIRST_ATTRIBUTE,"," RTRIM(TRIM(SUBSTR(OUTPRED.\"Attribute2\",17,100)),'rank=\"2\"/>') SECOND_ATTRIBUTE,"," RTRIM(TRIM(SUBSTR(OUTPRED.\"Attribute3\",17,100)),'rank=\"3\"/>') THIRD_ATTRIBUTE","FROM (SELECT CUST_ID, S.CLUSTER_ID, PROBABILITY PROB, "," CLUSTER_DETAILS(CUST_CLUSTER_MODEL USING T.*) DETAIL"," FROM (SELECT V.*, CLUSTER_SET(CUST_CLUSTER_MODEL, NULL, 0.2 USING *) PSET"," FROM CUSTOMERS360 V"," WHERE cust_id = ${CUST_ID ='101362','101362'|'102087'| '100456'}) T,"," TABLE(T.PSET) S"," ORDER BY 2 DESC) OUT,"," XMLTABLE('/Details'"," PASSING OUT.DETAIL"," COLUMNS "," \"Attribute1\" XMLType PATH 'Attribute[1]',"," \"Attribute2\" XMLType PATH 'Attribute[2]',"," \"Attribute3\" XMLType PATH 'Attribute[3]') OUTPRED"],"enabled":true,"result":{"startTime":1713901621928,"interpreter":"sql.low","endTime":1713901623724,"results":[{"message":"CUST_ID\tCLUSTER_ID\tPROB_PCT\tFIRST_ATTRIBUTE\tSECOND_ATTRIBUTE\tTHIRD_ATTRIBUTE\n100456\t5\t29\t\"AFFINITY_CARD\" actualValue=\"0\" weight=\".032\" \t\"Y_BOX_GAMES\" actualValue=\"0\" weight=\".027\" \t\"YRS_RESIDENCE\" actualValue=\"6\" weight=\".017\" \n100456\t4\t50\t\"AFFINITY_CARD\" actualValue=\"0\" weight=\".032\" \t\"Y_BOX_GAMES\" actualValue=\"0\" weight=\".027\" \t\"YRS_RESIDENCE\" actualValue=\"6\" weight=\".017\" \n100456\t3\t21\t\"AFFINITY_CARD\" actualValue=\"0\" weight=\".032\" \t\"Y_BOX_GAMES\" actualValue=\"0\" weight=\".027\" \t\"YRS_RESIDENCE\" actualValue=\"6\" weight=\".017\" \n","type":"TABLE"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":false,"width":12,"hideResult":false,"dynamicFormParams":"{\"CUST_ID\":\"'100456'\"}","row":0,"hasTitle":true,"hideVizConfig":false,"hideGutter":true,"relations":[],"forms":"[{\"type\":\"Select\",\"name\":\"CUST_ID\",\"displayName\":null,\"defaultValue\":\"'101362'\",\"argument\":null,\"options\":[{\"value\":\"'101362'\",\"displayName\":null},{\"value\":\"'102087'\",\"displayName\":null},{\"value\":\"'100456'\",\"displayName\":null}],\"isHidden\":false,\"isProgrammatic\":false}]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":null,"message":["%md","","## End of Script"],"enabled":true,"result":{"startTime":1713901623797,"interpreter":"md.low","endTime":1713901623858,"results":[{"message":"<h2 id=\"end-of-script\">End of Script<\/h2>\n","type":"HTML"}],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":true,"width":12,"hideResult":false,"dynamicFormParams":null,"row":0,"hasTitle":false,"hideVizConfig":true,"hideGutter":true,"relations":[],"forms":"[]"},{"col":0,"visualizationConfig":null,"hideInIFrame":false,"selectedVisualization":"html","title":null,"message":["%md"],"enabled":true,"result":{"startTime":1713901623929,"interpreter":"md.low","endTime":1713901623989,"results":[],"taskStatus":"SUCCESS","forms":"[]","status":"SUCCESS"},"sizeX":0,"hideCode":true,"width":12,"hideResult":true,"dynamicFormParams":null,"row":0,"hasTitle":false,"hideVizConfig":true,"hideGutter":true,"relations":[],"forms":"[]"}],"version":"6","snapshot":false,"tags":null}]